package com.g03.zy;

public class HomeWork {
    public static void main(String[] args) {
        // 测试1
        int[] nums = {1, 1, 2, 2, 3, 4, 5};
        int size = f1(nums);
        System.out.println("测试用例1: [1, 1, 2, 2, 3, 4, 5]");
        show(nums, size);

        // 测试2
        int[] nums1 = {0, 2, 2, 2, 2, 2, 5};
        size = f1(nums1);
        System.out.println("测试用例2: [0, 2, 2, 2, 2, 2, 5]");
        show(nums1, size);
    }

    public static int f1(int[] nums) {
        // 返回新数组的长度, 时间 O(n)  空间 O(1)
        int size = 0, i = 0, cur = 1;
        if (nums[0] != nums[1]) {  // 头部单独处理
            i++;
            size++;
        }
        for (; cur < nums.length - 1; cur++) {  // 中间部分处理
            if (nums[cur] != nums[cur - 1] && nums[cur] != nums[cur + 1]) {
                nums[i++] = nums[cur];
                size++;
            }
        }
        if (nums[cur] != nums[cur - 1]) {  // 最后一个处理
            nums[i++] = nums[cur];
            size++;
        }
        return size;
    }

    public static void show(int[] nums, int size) {
        // 打印数组
        for (int i = 0; i < size; i++) {
            System.out.printf("%d ", nums[i]);
        }
        System.out.println();
    }
}
